EMPTY REFLECTIONS
by FeltonzGurl0023
Summary: What if there was more to the Harry Potter Books than you thought.


Dial-Up Scripting Command Language  
For Dial-Up Networking Scripting Support  
  
Copyright (c) 1995 Microsoft Corp.  
  
Table of Contents  
  
1.0 Overview 2.0 Basic Structure of a Script 3.0 Variables  
3.1 System Variables 4.0 String Literals 5.0 Expressions 6.0 Comments 7.0 Keywords 8.0 Commands 9.0 Reserved Words  
  
1.0 Overview  
  
Many Internet service providers and online services require you to manually enter information, such as your user name and password, to establish a connection. With Scripting support for Dial-Up Networking, you can write a script to automate this process.  
  
A script is a text file that contains a series of commands, parameters, and expressions required by your Internet service provider or online service to establish the connection and use the service. You can use any text editor, such as Microsoft Notepad, to create a script file. Once you've created your script file, you can then assign it to a specific Dial-Up Networking connection by running the Dial-Up Scripting Tool.  
  
2.0 Basic Structure of a Script  
  
A command is the basic instruction that a script file contains. Some commands require parameters that further define what the command should do. An expression is a combination of operators and arguments that create a result. Expressions can be used as values in any command. Examples of expressions include arithmetic, relational comparisons, and string concatenations.  
  
The basic form of a script for Dial-Up Networking follows:  
  
  
A comment begins with a semi-colon and extends to  
the end of the line.  
  
  
proc main  
A script can have any number of variables  
and commands  
  
variable declarations  
  
command block  
  
endproc  
  
A script must have a main procedure, specified by the proc keyword, and a matching endproc keyword, indicating the end of the procedure.  
  
You must declare variables before you add commands. The first command in the main procedure is executed, and then any subsequent commands are executed in the order they appear in the script. The script ends when the end of the main procedure is reached.  
  
3.0 Variables  
  
Scripts may contain variables. Variable names must begin with a letter or an underscore ('_'), and may contain any sequence of upper- or lower-case letters, digits, and underscores. You cannot use a reserved word as a variable name. For more information, see the list of reserved words at the end of this document.  
  
You must declare variables before you use them. When you declare a variable, you must also define its type. A variable of a certain type may only contain values of that same type. The following three types of variables are supported:  
  
Type Description  
  
integer A negative or positive number, such as 7, -12,  
or 5698.  
  
string A series of characters enclosed in double-  
quotes; for example, "Hello world!" or "Enter password:".  
  
boolean A logical boolean value of TRUE or FALSE.  
  
Variables are assigned values using the following assignment statement:  
  
variable = expression  
  
The variable gets the evaluated expression.  
  
Examples:  
  
integer count = 5  
integer timeout = (4 * 3)  
integer i  
  
boolean bDone = FALSE  
  
string szIP = (getip 2)  
  
set ipaddr szIP  
  
3.1 System Variables  
  
System variables are set by scripting commands or are determined by the information your enter when you set up a Dial-Up Networking connection. System variables are read-only, which means they cannot be changed within the script. The system variables are:  
  
Name Type Description  
  
$USERID String The user identification for the current connection. This variable is  
the value of the user name specified in the Dial-Up Networking  
Connect To dialog box.  
  
$PASSWORD String The password for the current connection. This variable is the  
value of the user name specified in the Dial-Up Networking  
Connect To dialog box.  
  
$SUCCESS Boolean This variable is set by certain commands to indicate whether or not the command succeeded. A script can make  
decisions based upon the value of this variable.  
  
$FAILURE Boolean This variable is set by certain commands to indicate  
whether or not the command failed. A script can make decisions  
based upon the value of this variable.  
  
These variables may be used wherever an expression of a similar type is used. For example,  
  
transmit $USERID  
  
is a valid command because $USERID is a variable of type string.  
  
4.0 String Literals  
  
Scripting for Dial-Up Networking supports escape sequences and caret translations, as described below.  
  
String Literal Description  
  
^char Caret translation  
  
If char is a value between '@' and '_', the character  
sequence is translated into a single-byte value between 0  
and 31. For example, ^M is converted to a carriage return.  
  
If char is a value between a and z, the character sequence  
is translated into a single-byte value between 1 and 26.  
  
If char is any other value, the character sequence is not  
specially treated.  
  
Carriage return  
Linefeed  
\" Double-quote  
\^ Single caret  
\"  
waitfor ""  
  
5.0 Expressions  
  
An expression is a combination of operators and arguments that evaluates to a result. Expressions can be used as values in any command.  
  
An expression can combine any variable, or integer, string, or boolean values with any of the unary and binary operators in the following tables. All unary operators take the highest precedence. The precedence of binary operators is indicated by their position in the table.  
  
The unary operators are:  
  
Operator Type of Operation  
  
- Unary minus  
! One's complement  
  
The binary operators are listed in the following table in their order of precedence. Operators with higher precedence are listed first:  
  
Operators Type of Operation Type Restrictions  
  
* / Multiplicative Integers  
+ - Additive integers Strings (+ only)  
= Relational Integers  
== != Equality Integers, strings, booleans  
and Logical AND Booleans  
  
or Logical OR Booleans  
  
Examples:  
  
count = 3 + 5 * 40  
transmit "Hello" + " there"  
delay 24 / (7 - 1)  
  
6.0 Comments  
  
All text on a line following a semicolon is ignored.  
  
Examples:  
  
this is a comment  
  
transmit "hello" ; transmit the string "hello"  
  
7.0 Keywords  
  
Keywords specify the structure of the script. Unlike commands, they do not perform an action. The keywords are listed below.  
  
proc name  
  
Indicates the beginning of a procedure. All scripts must have a main  
procedure (proc main). Script execution starts at the main procedure  
and terminates at the end of the main procedure.  
  
endproc  
  
Indicates the end of a procedure. When the script is executed to the  
endproc statement for the main procedure, Dial-Up Networking will  
start PPP or SLIP.  
  
integer name [ = value ]  
  
Declares a variable of type integer. You can use any numerical  
expression or variable to initialize the variable.  
  
string name [ = value ]  
  
Declares a variable of type string. You can use any string literal or  
variable to initialize the variable.  
  
boolean name [ = value ]  
  
Declares a variable of type boolean. You can use any boolean  
expression or variable to initialize the variable.  
  
8.0 Commands  
  
All commands are reserved words, which means you cannot declare variables that have the same names as the commands. The commands are listed below:  
  
delay nSeconds  
  
Pauses for the number of seconds specified by nSeconds before  
executing the next command in the script.  
  
Examples:  
  
delay 2 ; pauses for 2 seconds  
delay x * 3 ; pauses for x * 3 seconds  
  
getip value  
  
Waits for an IP address to be received from the remote computer. If  
your Internet service provider returns several IP addresses in a  
string, use the value parameter to specify which IP address the script  
should use.  
  
Examples:  
  
get the second IP address  
set ipaddr getip 2  
  
assign the first received IP address to a variable  
szAddress = getip  
  
goto label  
  
Jumps to the location in the script specified by label and continues  
executing the commands following it.  
  
Example:  
  
waitfor "Prompt" until 10  
if !$SUCCESS then  
goto BailOut ; jumps to BailOut and executes commands  
following it  
endif  
  
transmit "bbs^M"  
goto End  
  
BailOut:  
transmit "^M"  
  
halt  
  
Stops the script. This command does not remove the terminal dialog  
window. You must click Continue to establish the connection. You  
cannot restart the script.  
  
if condition then  
commands  
endif  
  
Executes the series of commands if condition is TRUE.  
  
Example:  
  
if $USERID == "John" then  
transmit "Johnny^M"  
endif  
  
label :  
  
Specifies the place in the script to jump to. A label must be a unique  
name and follow the naming conventions of variables.  
  
set port databits 5 | 6 | 7 | 8  
  
Changes the number of bits in the bytes that are transmitted and  
received during the session. The number of bits can be between 5 and  
8. If you do not include this command, Dial-Up Networking will use the  
properties settings specified for the connection.  
  
Example:  
  
set port databits 7  
  
set port parity none | odd | even | mark | space  
  
Changes the parity scheme for the port during the session. If you do  
not include this command, Dial-Up Networking will use the properties  
settings specified for the connection.  
  
Example:  
  
set port parity even  
  
set port stopbits 1 | 2  
  
Changes the number of stop bits for the port during the session. This  
number can be either 1 or 2. If you do not include this command, Dial-  
Up Networking uses the properties settings specified for the  
connection.  
  
Example:  
  
set port stopbits 2  
  
set screen keyboard on | off  
  
Enables or disables keyboard input in the scripting terminal window.  
  
Example:  
  
set screen keyboard on  
  
set ipaddr string  
  
Specifies the IP address of the workstation for the session. String  
must be in the form of an IP address.  
  
Examples:  
  
szIPAddress = "11.543.23.13"  
set ipaddr szIPAddress  
  
set ipaddr "11.543.23.13"  
  
set ipaddr getip  
  
transmit string [ , raw ]  
  
Sends the characters specified by string to the remote computer.  
  
The remote computer will recognize escape sequences and caret  
translations, unless you include the raw parameter with the command.  
The raw parameter is useful when transmitting $USERID and $PASSWORD  
system variables when the user name or password contains character  
sequences that, without the raw parameter, would be interpreted as  
caret or escape sequences.  
  
Examples:  
  
transmit "slip" + "^M"  
transmit $USERID, raw  
  
waitfor string [ , matchcase ] [ then label  
{ , string [ , matchcase ] then label } ]  
[ until time ]  
  
Waits until your computer receives one or more of the specified  
strings from the remote computer. The string parameter is case-  
insensitive, unless you include the matchcase parameter.  
  
If a matching string is received and the then label parameter is used,  
this command will jump to the place in the script file designated by  
label.  
  
The optional until time parameter defines the maximum number of  
seconds that your computer will wait to receive the string before it  
execute the next command. Without this  
parameter, your computer will wait forever.  
  
If your computer receives one of the specified strings, the system  
variable $SUCCESS is set to TRUE. Otherwise, it is set to FALSE if the  
number of seconds specified by time elapses before the string is  
received.  
  
Examples:  
  
waitfor "Login:"  
  
waitfor "Password?", matchcase  
  
waitfor "prompt" until 10  
  
waitfor  
"Login:" then DoLogin,  
"Password:" then DoPassword,  
"BBS:" then DoBBS,  
"Other:" then DoOther  
until 10  
  
while condition do  
commands  
endwhile  
  
Executes the series of commands until condition is FALSE.  
  
Example:  
  
integer count = 0  
  
while count 4 do  
transmit "^M"  
waitfor "Login:" until 10  
if $SUCCESS then  
goto DoLogin  
endif  
count = count + 1  
endwhile  
...  
  
9.0 Reserved Words  
  
The following words are reserved and may not be used as variable names.  
  
and boolean databits delay  
do endif endproc endwhile  
even FALSE getip goto  
halt if integer ipaddr  
keyboard mark matchcase none  
odd off on or  
parity port proc raw  
screen set space stopbits  
string then transmit TRUE  
until waitfor while 


End file.
